home *** CD-ROM | disk | FTP | other *** search
/ Atari Forever 4 / Atari Forever 4.zip / Atari Forever 4.iso / SERIE_AI / AI_018 / POVRAY3.LZH / 3D2POV18 / SOURCE / VECT.H < prev   
C/C++ Source or Header  |  1993-03-08  |  1KB  |  40 lines

  1. #ifndef __VECT_H
  2. #define __VECT_H
  3.  
  4. #include <stdio.h>
  5.  
  6. typedef float Vector[3];
  7.  
  8. #define X 0
  9. #define Y 1
  10. #define Z 2
  11.  
  12. /* Transformation matrix */
  13. typedef float Matrix[4][4];
  14.  
  15. void vect_init (Vector v, float x, float y, float z);
  16. void vect_copy (Vector v1, Vector v2);
  17. int vect_equal (Vector v1, Vector v2);
  18. void vect_add (Vector v1, Vector v2, Vector v3);
  19. void vect_sub (Vector v1, Vector v2, Vector v3);
  20. void vect_scale (Vector v1, Vector v2, float k);
  21. float vect_mag (Vector v);
  22. void vect_normalize (Vector v);
  23. float vect_dot (Vector v1, Vector v2);
  24. void vect_cross (Vector v1, Vector v2, Vector v3);
  25. void vect_min (Vector v1, Vector v2, Vector v3);
  26. void vect_max (Vector v1, Vector v2, Vector v3);
  27. float vect_angle (Vector v1, Vector v2);
  28. void vect_print (FILE *f, Vector v, int dec, char sep);
  29. void vect_rotate (Vector v1, Vector v2, int axis, float angle);
  30. void vect_axis_rotate (Vector v1, Vector v2, Vector axis, float angle);
  31. void mx_identity (Matrix mx);
  32. void mx_rotate (Matrix mx1, Matrix mx2, int axis, float angle);
  33. void mx_axis_rotate (Matrix mx1, Matrix mx2, Vector axis, float angle);
  34. void mx_mult (Matrix mx1, Matrix mx2, Matrix mx3);
  35. void vect_transform (Vector v1, Vector v2, Matrix mx);
  36. void mx_decode (Matrix mx, Vector scale, Vector shear, Vector rotate, Vector
  37.      transl);
  38.  
  39. #endif
  40.